import org.apache.hadoop.hive.ql.exec.UDF;

import java.util.HashMap;
import java.util.Map;

/**
 * 身份证件类型转国标（未转换返回999）
 */
public class ConvertIdCardType extends UDF {
    // 身份证证件类型Map，在静态代码块中初始化
    private static Map<String, String> sfzjlxMap = new HashMap();

    static {
        sfzjlxMap.put("977", "1");
        sfzjlxMap.put("8056", "1"); // 1--居民身份证
        sfzjlxMap.put("978", "A");
        sfzjlxMap.put("8061", "A"); // A--护照
        sfzjlxMap.put("979", "6");
        sfzjlxMap.put("8051", "6"); // 6--香港特区护照/身份证明
        sfzjlxMap.put("980", "7");
        sfzjlxMap.put("8058", "7"); // 7--澳门特区护照/身份证明
        sfzjlxMap.put("981", "8");
        sfzjlxMap.put("8059", "8"); // 8--台湾居民来往大陆通行证
        sfzjlxMap.put("982", "Z");
        sfzjlxMap.put("8063", "Z"); // Z--其他
        sfzjlxMap.put("8055", "2"); // 2--军官证
        sfzjlxMap.put("8054", "3"); // 3--士兵证
        sfzjlxMap.put("8053", "4"); // 4--文职干部证
        sfzjlxMap.put("8052", "5"); // 5--部队离退休证
        sfzjlxMap.put("8060", "9"); // 9--境外永久居住证
        sfzjlxMap.put("8062", "B"); // B--户口簿
        sfzjlxMap.put("8057", "0"); // 0--无
    }

    public String evaluate(String sfzjlx) {
        // 返回对应编码，非法编码或者空值返回999
        return sfzjlxMap.getOrDefault(sfzjlx, "999");;
    }
}